package org.example.dao;

import org.example.pojo.Log;
import org.example.utils.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

public class LogsDao {


    public void addLog(String action, String username) throws SQLException {
        // 获取数据库连接
        Connection connection = JDBCUtils.getConnection();
        String sql = "INSERT INTO logs(action, username, timestamp) VALUES (?, ?, ?)";
        // 创建PreparedStatement对象，防止SQL注入
        PreparedStatement ps = connection.prepareStatement(sql);
        // 设置SQL语句中的参数
        ps.setString(1, action); // 设置第一个参数为action
        ps.setString(2, username); // 设置第二个参数为username
        ps.setTimestamp(3, new Timestamp(System.currentTimeMillis())); // 设置第三个参数为当前时间戳
        // 执行SQL插入操作
        ps.executeUpdate();
    }


    public List<Log> getLogs() throws SQLException {
        // 获取数据库连接
        Connection connection = JDBCUtils.getConnection();
        // SQL查询语句，按时间戳降序排列
        String sql = "SELECT * FROM logs ORDER BY timestamp DESC";
        // 创建PreparedStatement对象
        PreparedStatement ps = connection.prepareStatement(sql);
        // 执行SQL查询操作并获取结果集
        ResultSet rs = ps.executeQuery();

        // 创建一个日志记录的列表
        List<Log> logs = new ArrayList<>();
        // 遍历结果集
        while (rs.next()) {
            // 创建一个Log对象并设置其属性
            Log log = new Log();
            log.setId(rs.getInt("id")); // 从结果集中获取id并设置
            log.setAction(rs.getString("action")); // 从结果集中获取action并设置
            log.setUsername(rs.getString("username")); // 从结果集中获取username并设置
            log.setTimestamp(rs.getTimestamp("timestamp")); // 从结果集中获取timestamp并设置
            // 将Log对象添加到列表中
            logs.add(log);
        }
        // 返回日志记录的列表
        return logs;
    }
}
